/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.deployment.manager;

import br.com.deployment.entidade.empresa.Cartorio;
import br.com.deployment.entidade.humana.Pessoa;
import br.com.deployment.entidade.localidade.Cidade;
import br.com.deployment.entidade.localidade.Endereco;
import br.com.deployment.entidade.registroimovel.*;
import br.com.deployment.servico.AnexoServico;
import br.com.deployment.servico.AverbacaoServico;
import br.com.deployment.servico.CartorioServico;
import br.com.deployment.servico.ImovelServico;
import br.com.deployment.servico.LivroServico;
import br.com.deployment.servico.PessoaServico;
import br.com.deployment.servico.RegistroServico;
import br.com.deployment.servico.TransferenciaServico;
import br.com.deployment.util.Caracteres;
import br.com.deployment.util.TextoTransferencias;
import br.com.deployment.utilitario.Sexo;
import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperRunManager;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import org.primefaces.event.SelectEvent;
import org.primefaces.event.map.OverlaySelectEvent;
import org.primefaces.model.map.*;

/**
 *
 * @author roniere
 */
@ManagedBean
@SessionScoped
public class ManagerBuscarImovel implements Serializable {

    @EJB
    ImovelServico imovelServico;
    
    @EJB
    PessoaServico pessoaServico;
      
    @EJB
    TransferenciaServico transferenciaServico;
    
    @EJB
    AverbacaoServico averbacaoServico;
    
    @EJB
    CartorioServico cartorioServico;
    
    @EJB
    RegistroServico registroServico;
        
    @EJB
    AnexoServico anexoServico;
    
    @EJB
    LivroServico livroServico;
    
    private Imovel imovel;
    private Objeto objeto;
    private Endereco endereco;
    private Pessoa pessoa;
    private Pessoa pessoaBuscar;
    private Boolean ATanterior;
    private Transferencia transferencia;
    private Imovel verImovel;
    private Objeto verObjeto;
    private Titulo verTitulo;
    private Imovel verImovelAnterior;
    private Transferencia verTransferencia;
    private Transferencia verTransImovelAnterior;
    private List<Pessoa> verPessoas;
    private List<Imovel> lstImovel;
    private List<Transferencia> lstTransf;
    private List<Transferencia> lstVerTransf;
    private List<Averbacao> lstVerAverbacao;
    private boolean opc;
    
    private MapModel polygonModel;
    private Polygon markerPol;
    private String centerMap;
    private Objeto imovelMap;

    @PostConstruct
    public void init() {
        
        
        this.imovel = new Imovel();
        this.verImovel = new Imovel();
        this.verImovelAnterior = new Imovel();
        this.verObjeto = new Objeto();
        this.verTitulo = new Titulo();
        this.verTransferencia = new Transferencia();
        this.verPessoas = new ArrayList<Pessoa>();
        this.endereco = new Endereco();
        this.objeto = new Objeto();
        this.pessoa = new Pessoa();
        this.pessoaBuscar = new Pessoa();
        this.transferencia = new Transferencia();
        this.lstImovel = new ArrayList<Imovel>();
        this.lstTransf = new ArrayList<Transferencia>();
        this.lstVerTransf = new ArrayList<Transferencia>();
        this.verTransImovelAnterior = new Transferencia();
        this.lstVerAverbacao = new ArrayList<Averbacao>();
        this.polygonModel = new DefaultMapModel();
        this.centerMap = "-2.9136, -41.7577";
        

    }
    
    public void initMap(List<GeoRef> gf){
        Polygon polygon = new Polygon();  
        
        Double centerX = 0D;
        Double centerY = 0D;
        
        for (GeoRef geoRef : gf) {
            polygon.getPaths().add(new LatLng(geoRef.getLat(), geoRef.getLng()));
            polygonModel.addOverlay(new Marker(new LatLng(geoRef.getLat(), geoRef.getLng())));
            centerX += geoRef.getLat() / gf.size();
            centerY += geoRef.getLng() / gf.size();
        }
        
        centerMap = ""+centerX+", "+centerY;
        
        polygon.setStrokeColor("#FF9900");  
        polygon.setData(verImovel.getObjeto());
        polygon.setFillColor("#FF9900");  
        polygon.setStrokeOpacity(0.6);  
        polygon.setFillOpacity(0.5);
        
        this.imovelMap = verImovel.getObjeto();
        
        polygonModel.addOverlay(polygon); 
        
        for(Marker marker : polygonModel.getMarkers()) {  
            marker.setDraggable(true);  
        }  
        
    
    }
    
   public void onMarkerSelect(OverlaySelectEvent event) {
       if(event.getOverlay() instanceof Polygon){
            this.markerPol = (Polygon) event.getOverlay();
            this.imovelMap = (Objeto) markerPol.getData();
       }else if(event.getOverlay() instanceof Marker){
           
       }
       
   }

    public Objeto getImovelMap() {
        return imovelMap;
    }

    public void setImovelMap(Objeto imovelMap) {
        this.imovelMap = imovelMap;
    }

   
   
    public String getCenterMap() {
        return centerMap;
    }

    public void setCenterMap(String centerMap) {
        this.centerMap = centerMap;
    }

  
   
    public Polygon getMarkerPol() {
        return markerPol;
    }

    public void setMarkerPol(Polygon markerPol) {
        this.markerPol = markerPol;
    }
     
     
    public MapModel getPolygonModel() {
        return polygonModel;
    }

    public void setPolygonModel(MapModel polygonModel) {
        this.polygonModel = polygonModel;
    }

    
    public List<Averbacao> getLstVerAverbacao() {
        return lstVerAverbacao;
    }

    public void setLstVerAverbacao(List<Averbacao> lstVerAverbacao) {
        this.lstVerAverbacao = lstVerAverbacao;
    }

    public Transferencia getVerTransImovelAnterior() {
        return verTransImovelAnterior;
    }

    public void setVerTransImovelAnterior(Transferencia verTransImovelAnterior) {
        this.verTransImovelAnterior = verTransImovelAnterior;
    }

    public Imovel getVerImovelAnterior() {
        return verImovelAnterior;
    }

    public void setVerImovelAnterior(Imovel verImovelAnterior) {
        this.verImovelAnterior = verImovelAnterior;
    }

    public List<Transferencia> getLstVerTransf() {

        return lstVerTransf;
    }

    public void setLstVerTransf(List<Transferencia> lstVerTransf) {
        this.lstVerTransf = lstVerTransf;
    }

    public List<Transferencia> getLstTransf() {
        return lstTransf;
    }

    public void setLstTransf(List<Transferencia> lstTransf) {
        this.lstTransf = lstTransf;
    }

    public boolean isOpc() {
        return opc;
    }

    public void setOpc(boolean opc) {
        this.opc = opc;
    }

    public Pessoa getPessoaBuscar() {
        return pessoaBuscar;
    }

    public void setPessoaBuscar(Pessoa pessoaBuscar) {
        this.pessoaBuscar = pessoaBuscar;
    }

    public List<Pessoa> getVerPessoas() {
        return verPessoas;
    }

    public void setVerPessoas(List<Pessoa> verPessoas) {
        this.verPessoas = verPessoas;
    }

    public Titulo getVerTitulo() {
        return verTitulo;
    }

    public void setVerTitulo(Titulo verTitulo) {
        this.verTitulo = verTitulo;
    }

    public Objeto getVerObjeto() {
        return verObjeto;
    }

    public void setVerObjeto(Objeto verObjeto) {
        this.verObjeto = verObjeto;
    }

    public Transferencia getVerTransferencia() {
        return verTransferencia;
    }

    public void setVerTransferencia(Transferencia verTransferencia) {
        this.verTransferencia = verTransferencia;
    }

    public Boolean getATanterior() {
        return ATanterior;
    }

    public void setATanterior(Boolean ATanterior) {
        this.ATanterior = ATanterior;
    }

    
    public Imovel getVerImovel() {
        return verImovel;
    }

    public void setVerImovel(Imovel verImovel) {
        this.verImovel = verImovel;
    }

    public List<Imovel> getLstImovel() {
        return lstImovel;
    }

    public void setLstImovel(List<Imovel> lstImovel) {
        this.lstImovel = lstImovel;
    }

    public Transferencia getTransferencia() {
        return transferencia;
    }

    public void setTransferencia(Transferencia transferencia) {
        this.transferencia = transferencia;
    }

    public Pessoa getPessoa() {
        return pessoa;
    }

    public void setPessoa(Pessoa pessoa) {
        this.pessoa = pessoa;
    }

    public Endereco getEndereco() {
        return endereco;
    }

    public void setEndereco(Endereco endereco) {
        this.endereco = endereco;
    }

    public Imovel getImovel() {
        return imovel;
    }

    public void setImovel(Imovel imovel) {
        this.imovel = imovel;
    }

    public Objeto getObjeto() {
        return objeto;
    }

    public void setObjeto(Objeto objeto) {
        this.objeto = objeto;
    }

    public void buscarImovel() {
        
        if (imovel != null) {
            imovel.setObjeto(objeto);
        }
        if (pessoaBuscar.getNome() != null && pessoaBuscar.getNome() != "") {
            
            if(pessoaBuscar.getCpf() != null &&  pessoaBuscar.getCpf() != ""){
                Caracteres c = new Caracteres();
                pessoaBuscar.setCpf(c.removecaracter(pessoaBuscar.getCpf()));
            }
            if(pessoaBuscar.getCnpj() != null && pessoaBuscar.getCnpj() != ""){
                Caracteres c = new Caracteres();
                pessoaBuscar.setCnpj(c.removecaracter(pessoaBuscar.getCnpj()));
            }
            

            if (opc) {
                //adquirente
                lstTransf = transferenciaServico.findTransImovel(imovel, pessoaBuscar, null, ATanterior);

            } else {
                //transmitente
                lstTransf = transferenciaServico.findTransImovel(imovel, null, pessoaBuscar, ATanterior);
            }

        } else {
            lstTransf = transferenciaServico.findTransImovel(imovel, null, null, ATanterior);
        }
        System.err.println(lstTransf);
    }

    public List<Pessoa> recuperaPessoaAdquirente(List<Pessoa> pessoaBruta) {
        List<Pessoa> lstPessoa = new ArrayList<Pessoa>();
        for (Pessoa pessoaux : pessoaBruta) {
            if (pessoaux != null) {
                lstPessoa.add(pessoaServico.find(pessoaux.getId()));
            }
        }

        return lstPessoa;
    }

    public List<Pessoa> recuperaPessoaTransmitente(List<Pessoa> pessoaBruta) {
        List<Pessoa> lstPessoaTrans = new ArrayList<Pessoa>();
        for (Pessoa pessoaux : pessoaBruta) {
            if (pessoaux != null) {
                lstPessoaTrans.add(pessoaServico.find(pessoaux.getId()));
            }
        }

        return lstPessoaTrans;
    }

    public void load() {
        List<Pessoa> lstPessoa = new ArrayList<Pessoa>();

        for (Pessoa pessoa1 : transferencia.getAdquirente()) {
            lstPessoa.add(pessoaServico.find(pessoa1.getId()));
        }
        transferencia.setAdquirente(lstPessoa);
        lstPessoa.clear();
        for (Pessoa pessoa2 : transferencia.getTransmitente()) {
            lstPessoa.add(pessoaServico.find(pessoa2.getId()));
        }
        transferencia.setTransmitente(lstPessoa);

    }

    public void handleSelect(SelectEvent event) {
        Pessoa pessoa = (Pessoa) event.getObject();
    }
    public void handleSelectCidade(SelectEvent event) {
        try{
            objeto.setCidade((Cidade) event.getObject());
        }catch(Exception e){
            objeto.setCidade(null);
        }
    }
    
    public void verImovel(Imovel imovel) {
        init();
        verTransferencia = (transferenciaServico.verificaPrimeiraTrans(imovel.getId()));
        verImovel = imovelServico.find(imovel.getId());
        verObjeto = imovel.getObjeto();
        lstVerTransf = transferenciaServico.findImovelAll(imovel, "DESC");
        
        verImovel.setRegistros(registroServico.getRegistros(verImovel));
        verImovel.setAverbacao(averbacaoServico.findAverImovel(imovel, "DESC"));
        verImovel.setAnexo(anexoServico.anexos(verImovel));
        if(verObjeto.getGeoReferenciamento() != null ){
            initMap(verObjeto.getGeoReferenciamento());
        }
        System.err.println("Anexos"+verImovel.getAnexo());
        redirect("verImovel.xhtml");
        
    }
    
    public List<TextoTransferencias> ordenarList(List<TextoTransferencias> texto){
        System.err.println("Ordenar List: "+texto);
        List<TextoTransferencias> teste = new ArrayList<TextoTransferencias>();
        teste = texto;
        for (TextoTransferencias textoTransferencias : teste) {
            System.err.println(textoTransferencias.getData());
        }
        Collections.sort(teste, new Comparator<TextoTransferencias>() {
            @Override
            public int compare(TextoTransferencias o1, TextoTransferencias o2) {
                return o1.getData().compareTo(o2.getData());   
            }
        });
        
        teste = numeraList(teste);
        
        return teste;
    }
    public List<TextoTransferencias> numeraList(List<TextoTransferencias> tt){
        
        List<TextoTransferencias> lstTrans = new ArrayList<TextoTransferencias>();
        int id = 1;
        for (TextoTransferencias  texto : tt) {
            texto.setTexto(texto.getTexto().replace("#numero", ""+id));
            lstTrans.add(texto);
            id++;
        }
        return lstTrans;
    }

    public String escritura(Imovel esImovel) {
//        lstVerTransf;
        
        try {

            FacesContext facesContext;
            HttpServletResponse response;
            InputStream inputStream;
            
            Cartorio cartorio = new Cartorio();
            
            cartorio = cartorioServico.getCartorioContext();
            
            String fileOrigem;
            String fileDestino;
            String nomeTitulo = ""+cartorio.getTitular().getNome();
            String endereco = ""+cartorio.getEndereco().getTipo_logradouro().toString().toLowerCase() + " " +cartorio.getEndereco().getLogradouro() + " - " + cartorio.getEndereco().getTelefone();
            String cidade = ""+cartorio.getEndereco().getCidade().getNom_cidade().toUpperCase() + " - " + cartorio.getEndereco().getEstado().getNom_estado().toUpperCase();
            
            String anterior = "";
            int count = 0;
            if(!esImovel.getImovelAnterior().isEmpty()){
                for (Imovel im : esImovel.getImovelAnterior()) {
                    count++;
                    anterior += im.getRegistro();
                    if(count < esImovel.getImovelAnterior().size()){
                        anterior += ", ";
                    }   

                }
            }else{
                anterior += ""+esImovel.getImovelAnteriorSemCadastro() ;
            }
            
            HashMap<String, Object> parametros;

            
            parametros = new HashMap<String, Object>();
            parametros.put("matricula", esImovel.getRegistro());
            parametros.put("principal", geraTextoPrincipal(esImovel));
            parametros.put("livro", livroServico.find(esImovel.getLivro().getId()).getTitulo());
            parametros.put("folha", esImovel.getFolhasString());
            parametros.put("cartorioNome", cartorio.getNome());
            parametros.put("cartorioTitular", nomeTitulo + " - Titular");
            parametros.put("cartorioEndereco", endereco);
            parametros.put("cartorioCidade", cidade);
            
            parametros.put("registroAnterior", anterior == null ? "": anterior.equals("null") ? "": anterior);
            facesContext = FacesContext.getCurrentInstance();

            List<TextoTransferencias> lstTextoTrans = new ArrayList<TextoTransferencias>();
            List<Averbacao> lstTextoAv = new ArrayList<Averbacao>();
            
            int primeiraTrans = 0;
            for (Transferencia tra : transferenciaServico.findImovelAll(imovelServico.find(esImovel.getId()), "ASC")) {
//                if(primeiraTrans != 0){
                    TextoTransferencias tt = new TextoTransferencias();
                    tt.setTexto(tra.getTexto());
                    tt.setData(tra.getDataCadastro());
                    tt.setUsuario(tra.getUsuario().getNome());
                    tt.setCargo(tra.getUsuario().getCargo());
                    DateFormat df = new SimpleDateFormat ("dd/MM/yyyy"); 
                    tt.setCidadeData(""+cartorio.getEndereco().getCidade().getNom_cidade()+", "+df.format(tra.getDataCadastro()));
                    System.err.println(" ----------------- TEXT --------- "+tt);
                    lstTextoTrans.add(tt);
//                }
//                primeiraTrans++;
            }
            
            for(Averbacao av : averbacaoServico.findAverImovel(esImovel, "ASC")){
                TextoTransferencias tt = new TextoTransferencias();
                tt.setTexto(gerarTextoAverbacao(av, esImovel, cartorio.getEndereco().getCidade().getNom_cidade()));
                tt.setData(av.getDataAverbacao());
                tt.setUsuario(av.getUsuario().getNome());
                tt.setCargo(av.getUsuario().getCargo());
                DateFormat df = new SimpleDateFormat ("dd/MM/yyyy");  
                tt.setCidadeData(""+cartorio.getEndereco().getCidade().getNom_cidade()+", "+df.format(av.getDataAverbacao()));
                lstTextoTrans.add(tt);
                
            }
            
             for(Registro re : registroServico.getRegistros(esImovel)){
                TextoTransferencias tt = new TextoTransferencias();
                tt.setTexto(gerarTextoRegistro(re, esImovel, cartorio.getEndereco().getCidade().getNom_cidade()));
                tt.setData(re.getDataRegistro());
                tt.setUsuario(re.getUsuario().getNome());
                tt.setCargo(re.getUsuario().getCargo());
                DateFormat df = new SimpleDateFormat ("dd/MM/yyyy");  
                tt.setCidadeData(""+cartorio.getEndereco().getCidade().getNom_cidade()+", "+df.format(re.getDataRegistro()));
                lstTextoTrans.add(tt);
                
            }
//            if(primeiraTrans != 0){
                lstTextoTrans = ordenarList(lstTextoTrans);
//            }
            
            JRDataSource jrds = new JRBeanCollectionDataSource(lstTextoTrans);

            fileOrigem = facesContext.getExternalContext().getRealPath("/relatorio/escritura.jasper");
            response = (HttpServletResponse) facesContext.getExternalContext().getResponse();
            inputStream = facesContext.getExternalContext().getResourceAsStream("/relatorio/escritura.jasper");

            ServletOutputStream ouputStream = response.getOutputStream();

            JasperRunManager.runReportToPdfStream(inputStream, ouputStream, parametros, jrds);
            response.setContentType("application/pdf");
            facesContext.responseComplete();
            ouputStream.flush();
            ouputStream.close();
        } catch (IOException ex) {
            Logger.getLogger(ManagerBuscarImovel.class.getName()).log(Level.SEVERE, null, ex);
            System.err.println("CARTORIO IOEXCEPTION--------------------- ");
        } catch (JRException ex) {
            Logger.getLogger(ManagerBuscarImovel.class.getName()).log(Level.SEVERE, null, ex);
            System.err.println("CARTORIO JREXCEPTION--------------------- ");
        }
        return "escritura";
    }

    public String geraTextoCartorio(){
        
        return null;
    }
    
    public String geraTextoPrincipal(Imovel imovelPrincipal) {
        Transferencia transferenciaTextoPrincipal = new Transferencia();

        transferenciaTextoPrincipal = (transferenciaServico.verificaPrimeiraTrans(imovelPrincipal.getId()));
        String texto = "";
        
                
        texto += "Um(a) " + imovelPrincipal.getObjeto().getTipo().toString().toLowerCase() + " situado(a) no(a) "
                + (imovelPrincipal.getObjeto().getLogradouro() != null ?  imovelPrincipal.getObjeto().getTipo_logradouro().toString().toLowerCase() + " " + imovelPrincipal.getObjeto().getLogradouro() + "," : " ")
                + (imovelPrincipal.getObjeto().getNumero() != null ? " número " + imovelPrincipal.getObjeto().getNumero() : " ") +
                (imovelPrincipal.getObjeto().getBairro() != null ? ", bairro " + imovelPrincipal.getObjeto().getBairro():" ")
                + (imovelPrincipal.getObjeto().getDescricao() != null ? " com as seguintes características e  confrontações: " + 
                imovelPrincipal.getObjeto().getDescricao() : imovelPrincipal.getObjeto().getFrente() != null ?" com as seguintes confrontações: ":"") +
                (imovelPrincipal.getObjeto().getFrente() != null ? "Frente " + imovelPrincipal.getObjeto().getFrente() : " ") +
                (imovelPrincipal.getObjeto().getLadoDireito() != null ? "; lado direito, " + imovelPrincipal.getObjeto().getLadoDireito() : "" ) +
                (imovelPrincipal.getObjeto().getLadoEsquerdo() != null ? "; lado esquerdo," + imovelPrincipal.getObjeto().getLadoEsquerdo() : "") + 
                (imovelPrincipal.getObjeto().getFundo() != null ? "fundo "+imovelPrincipal.getObjeto().getFundo() : " ");

        if (transferenciaTextoPrincipal.getTransmitente().isEmpty()) {
            texto += ";<b> PROPRIETÁRIO: </b>";
            texto += textoAdTra(transferenciaTextoPrincipal.getAdquirente());
        }else{
            texto += "; <b> TRANSMITENTE: </b>";
            texto += textoAdTra(transferenciaTextoPrincipal.getTransmitente());
            texto += ";<b> ADQUIRENTE:</b> ";
            texto += textoAdTra(transferenciaTextoPrincipal.getAdquirente());
        }
        
        texto += ";<b> TITULO: </b>" + transferenciaTextoPrincipal.getTitulo().getNome() + " ";
        texto += "; <b> FORMA DO TITULO: </b>" + transferenciaTextoPrincipal.getFormaTitulo();
        
        texto += ".DOU FÉ.";

        return texto;
    }
    
    public String textoAdTra(List<Pessoa> p){
        String texto = "";
         for (Pessoa pessoa1 : p) {

                texto += pessoa1.getNome() + ", "
                        + (pessoa1.getEndereco().getPais() == null ? "" : pessoa1.getEndereco().getPais().equalsIgnoreCase("Brasil") ? (pessoa1.getSexo() == Sexo.Masculino ? "Brasileiro" : "Brasileira") : "")
                        + "" + (pessoa1.getEstadocivil() == null ? "" : ", " + pessoa1.getEstadocivil().toString())
                        + "" + (pessoa1.getProfissao() == null ? "" : ", " + pessoa1.getEstadocivil().toString()) + ","
                        + " residente e domiciliado ";

                texto += pessoa1.getEndereco().getTipo_logradouro().toString().toLowerCase()
                        + "" + (pessoa1.getEndereco().getLogradouro() == null ? " " : " " + pessoa1.getEndereco().getLogradouro())
                        + "" + (pessoa1.getEndereco().getBairro() == null ? "" : ", Bairro " + pessoa1.getEndereco().getBairro())
                        + "" + (pessoa1.getEndereco().getCidade().getNom_cidade() == null ? "" : ", " + pessoa1.getEndereco().getCidade().getNom_cidade())
                        + "" + (pessoa1.getEndereco().getEstado().getNom_estado() == null ? "" : ", " + pessoa1.getEndereco().getEstado().getNom_estado()) + "";


                texto += ""
                        + (pessoa1.getCpf() == null ? "" : ", portador do CPF nº" + pessoa1.getCpf()) 
                        + (pessoa1.getRg() == null ? "" : " e do RG nº " + pessoa1.getRg());

                texto += (pessoa1.getCnpj() == null ? "" : ", portador do CNPJ nº " + pessoa1.getCnpj());
            }
        return texto;
    }


    
    
    public String gerarTextoAverbacao(Averbacao av, Imovel imovel, String cidade){
        String[] registro = imovel.getRegistro().toString().split("-");
        
        String texto = "";
        DateFormat df = new SimpleDateFormat ("dd/MM/yyyy");  
        if(av != null){
            texto += "AV#numero/"+registro[0];
            texto += " -  "+av.getDescricao().replace("<br/>", "") +"."
                    + "O REFERIDO É VERDADE, DOU FÉ.\n";
        }
        
        return texto;
    }
    public String gerarTextoRegistro(Registro av, Imovel imovel, String cidade){
        String[] registro = imovel.getRegistro().toString().split("-");
        
        String texto = "";
        DateFormat df = new SimpleDateFormat ("dd/MM/yyyy");  
        if(av != null){
            texto += "R#numero/"+registro[0];
            texto += " -  "+av.getDescricao().replace("<br/>", "") +"."
                    + "O REFERIDO É VERDADE, DOU FÉ.\n";
        }
        
        return texto;
    }

    public void redirect(String string) {
        try {
            FacesContext context = FacesContext.getCurrentInstance();
            context.getExternalContext().redirect(string);
        } catch (IOException ex) {
            Logger.getLogger(ManagerImovel.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void verAnterior(Imovel imovelAnterior) {
        verImovelAnterior = imovelServico.find(imovelAnterior.getId());
        verTransImovelAnterior = transferenciaServico.verificaPrimeiraTrans(verImovelAnterior.getId());
    }

    public void ImovelAnteriorClear() {
        verImovelAnterior = new Imovel();
    }
    
 
}
